# 作业：
# 任一个英文的纯文本文件，统计其中的单词出现的个数。

import re
# 获取文件资源
artical = open('artical.txt','r')
# 一次性读取所有数据：
articalContent = artical.read()
# 第一种方式：通过替换特殊字符实现
print('第一种方式：通过替换特殊字符实现：')
print()
# 处理数据
# 把所有特殊字符替换成空格
articalContent = re.sub('[,.!?\/\r\n]',' ',articalContent)
allWords = list(articalContent.split())
words = []
for word in allWords:
    if word not in words:
        words.append(word)
for word in words:
    print('{} 在文章中出现了{} 次'.format(word,allWords.count(word)))
# 关闭资源
artical.close()
print()
print()

# 两种方法的思路都非常的好，结果也是符号要求的。但是基于代码规范性的要求，老师提下面几点建议
# 1. 尽量使用with语法来打开文件，保证文件能够正常关闭。因为使用open和close方法，有时候文件可能不会正常关闭，会导致额外的资源消耗
# 2. 如果学习了函数的内容，可以尝试把这部分代码改成函数来实现。更简洁美观。同时有利于代码复用。

# 第二种：通过匹配字符实现
print('第二种：通过匹配字符实现：')
print()
artical = open('artical.txt','r')
articalContent = artical.read()
allWords = re.findall(r'[a-zA-Z\']+',articalContent)
words = []
for word in allWords:
    if word not in words:
        words.append(word)
for word in words:
    print('{} 在文章中出现了 {} 次'.format(word,allWords.count(word)))
artical.close()